package net.office.service.impl;

import net.office.bean.StaffTrain;
import net.office.bean.StaffTrainExample;
import net.office.mapper.StaffTrainMapper;
import net.office.service.StaffTrainService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StaffTrainServiceImpl implements StaffTrainService {

    @Autowired
    private StaffTrainMapper staffTrainMapper;

    @Override
    public List<StaffTrain> findAll() {
        StaffTrainExample example = new StaffTrainExample();
        return staffTrainMapper.selectByExample(example);
    }

    @Override
    public int deleteByPrimaryKey(Integer staffTrainId) {
        return staffTrainMapper.deleteByPrimaryKey(staffTrainId);
    }

    @Override
    public List<StaffTrain> findByStaffTrain(StaffTrain staffTrain) {
        StaffTrainExample example = new StaffTrainExample();
        StaffTrainExample.Criteria criteria = example.createCriteria();

        if(staffTrain.getStaffTrainId() != null){
            criteria.andStaffTrainIdEqualTo(staffTrain.getStaffTrainId());
        }
        if(staffTrain.getStaffId() != null){
            criteria.andStaffIdEqualTo(staffTrain.getStaffId());
        }
        if(staffTrain.getStaffNo() != null
                && staffTrain.getStaffNo().trim().length() != 0){
            criteria.andStaffNoLike("%" + staffTrain.getStaffNo() + "%");
        }
        if(staffTrain.getStaffName() != null
                && staffTrain.getStaffName().trim().length() != 0){
            criteria.andStaffNameLike("%" + staffTrain.getStaffName() + "%");
        }
        if(staffTrain.getStaffTrainStartDate() != null){
            criteria.andStaffTrainStartDateEqualTo(staffTrain.getStaffTrainStartDate());
        }
        if(staffTrain.getStaffTrainEndDate() != null){
            criteria.andStaffTrainEndDateEqualTo(staffTrain.getStaffTrainEndDate());
        }
        if(staffTrain.getStaffTrainUnit() != null
                && staffTrain.getStaffTrainUnit().trim().length() != 0){
            criteria.andStaffTrainUnitLike("%" + staffTrain.getStaffTrainUnit() + "%");
        }
        if(staffTrain.getStaffTrainContent() != null
                && staffTrain.getStaffTrainContent().trim().length() != 0){
            criteria.andStaffTrainContentLike("%" + staffTrain.getStaffTrainContent() + "%");
        }
        if(staffTrain.getStaffTrainApplyReason() != null
                && staffTrain.getStaffTrainApplyReason().trim().length() != 0){
            criteria.andStaffTrainApplyReasonLike("%" + staffTrain.getStaffTrainApplyReason() + "%");
        }
        if(staffTrain.getStaffTrainApplyResult() != null){
            criteria.andStaffTrainApplyResultEqualTo(staffTrain.getStaffTrainApplyResult());
        }
        if(staffTrain.getStaffTrainResult() != null){
            criteria.andStaffTrainResultEqualTo(staffTrain.getStaffTrainResult());
        }
        example.or(criteria);

        return staffTrainMapper.selectByExample(example);
    }

    @Override
    public int insert(StaffTrain staffTrain) {
        return staffTrainMapper.insertSelective(staffTrain);
    }

    @Override
    public StaffTrain findOneByStaffTrainId(Integer staffTrainId) {
        return staffTrainMapper.selectByPrimaryKey(staffTrainId);
    }

    @Override
    public int updateByPrimaryKey(StaffTrain staffTrain) {
        return staffTrainMapper.updateByPrimaryKey(staffTrain);
    }

    @Override
    public List<StaffTrain> findAllByStaffId(int staffId) {
        StaffTrainExample example = new StaffTrainExample();
        example.createCriteria().andStaffIdEqualTo(staffId);

        return staffTrainMapper.selectByExample(example);
    }
}
